import { IsNotEmpty, IsStrongPassword, MaxLength } from 'class-validator';

export class LoginDto {
  /**
   * 登录用户名
   * @example 'zhangsan'
   */
  @IsNotEmpty({ message: '用户名必填' })
  username: string;

  /**
   * 登录密码
   * @example 'Zs123456.'
   */
  @IsNotEmpty({ message: '密码必填' })
  @MaxLength(20, { message: '密码长度太长' })
  @IsStrongPassword(
    /**
     * minLength: 密码的最小长度（默认值：8）。
     * minLowercase: 最少的小写字母数量（默认值：1）。
     * minUppercase: 最少的大写字母数量（默认值：1）。
     * minNumbers: 最少的数字数量（默认值：1）。
     * minSymbols: 最少的符号数量（默认值：1）。
     */
    {
      minLength: 8,
      minLowercase: 1,
      minUppercase: 1,
      minNumbers: 1,
      minSymbols: 1,
    },
    { message: '密码格式错误' },
  )
  password: string;
}

export class LoginResponseDto {
  /**
   * 登录密码
   * @example "eyJhbxxxCJ9.eyJzdxxxAwMTMxMjh9.zBtfCiBUxx9RlZcFhZS_6MjJp2g"
   */
  token: string;
}
